package com.sam.im.heiqun.nets;


import com.sam.im.heiqun.constant.Constant;
import com.sam.im.heiqun.entities.AAentivity;
import com.sam.im.heiqun.entities.AcutocheckEntity;
import com.sam.im.heiqun.entities.AddFriendEntity;
import com.sam.im.heiqun.entities.CircleItemEntity;
import com.sam.im.heiqun.entities.Circlepreview;
import com.sam.im.heiqun.entities.ColactionEntity;
import com.sam.im.heiqun.entities.FanYiBean;
import com.sam.im.heiqun.entities.GetmoneyEntivity;
import com.sam.im.heiqun.entities.ImFriendEntivity;
import com.sam.im.heiqun.entities.ImGroupEntivity;
import com.sam.im.heiqun.entities.LiangSortItem;
import com.sam.im.heiqun.entities.LoginEntivity;
import com.sam.im.heiqun.entities.MyCircleItem;
import com.sam.im.heiqun.entities.MyGiftItem;
import com.sam.im.heiqun.entities.NearbyEntivity;
import com.sam.im.heiqun.entities.PayTransferEntivity;
import com.sam.im.heiqun.entities.PayUrlInfoEntity;
import com.sam.im.heiqun.entities.PhpStatusEntivity;
import com.sam.im.heiqun.entities.ReadyEntivity;
import com.sam.im.heiqun.entities.RedPacketHistoryEntivity;
import com.sam.im.heiqun.entities.RequestRefereeEntity;
import com.sam.im.heiqun.entities.SearchGroupEntity;
import com.sam.im.heiqun.entities.SearchUserEntity;
import com.sam.im.heiqun.entities.SendCircleEntivity;
import com.sam.im.heiqun.entities.TransferViewEntivity;
import com.sam.im.heiqun.entities.TransfreCreateEntivity;
import com.sam.im.heiqun.entities.UpdateProfileEntivity;
import com.sam.im.heiqun.entities.ValidateEntivity;
import com.sam.im.heiqun.entities.VersionEntivity;
import com.sam.im.heiqun.entities.WalletDetailsEntity;
import com.sam.im.heiqun.entities.YaoyiYao;
import com.sam.im.heiqun.entities.beans.InfoBean;
import com.sam.im.heiqun.entities.weixinBean;
import com.sam.im.heiqun.entities.weixinQRData;
import com.sam.im.heiqun.uis.beans.AATransDetailBean;
import com.sam.im.heiqun.uis.beans.ContactImportEntity;
import com.sam.im.heiqun.uis.beans.GetNoticeListEntity;
import com.sam.im.heiqun.uis.beans.GetVipNumBean;
import com.sam.im.heiqun.uis.beans.GlobalRoamingBeans;
import com.sam.im.heiqun.uis.beans.GroupLevelEntity;
import com.sam.im.heiqun.uis.beans.RechargeOrderBean;
import com.sam.im.heiqun.uis.beans.ReportResultBean;
import com.sam.im.heiqun.uis.beans.queryLuckRedPacketEntivity;

import java.util.List;

import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * created by arvin on 16/12/7 13:45
 */
public interface PGApi {

    /**
     * 微信APPID
     */
    String WX_APP_ID = "wxd0c2b6a5ac8c7957";//wxd44bd36b209c1bc9
    /**
     * 百度翻译APPID
     */
    public static final String BDFY_APP_ID = "20170925000085043";//20170925000085043
    public static final String BDFY_MY = "d0riQ0EilXmLNqzvK1T3";//20170925000085043

    /**
     * 图片上传
     */
    public static final String UPLOADPIC = Constant.BASE + "chat/uploadImage?fileExt=png";
    /**
     * 翻译接口
     */
    public static final String getTextFanYi = "http://api.fanyi.baidu.com/api/trans/";
    /**
     * PHP接口地址
     */
//    public static final String getURLPHP = "http://samim.huiwork.com/";
            /*
            黑群正式服务器地址
             */
    public static final String getURLPHP = "http://47.107.155.98:8080";
    // public static final String getURLPHP = "http://192.168.1.188/";
    /**
     * paypal 支付,获取url 接口
     * <p>
     * Java提供的接口地址
     */
//    public static final String getPayPalUrl = "http://wslm.hui2013.com:8080/imgroup/";
//    public static final String getPayPalUrl = "http://123.57.47.19:8080/wmsMobile/";
            /*
            黑群正式服务器地址
             */
    //public static final String getPayPalUrl = "https://www.hq12345678.com/imgroup/";
    //public static final String getPayPalUrl = "http://192.168.1.188:8080/imgroup/";
    public static final String getPayPalUrl = "http://47.107.155.98:8080/imgroup/";
    //http://wslm.hui2013.com:8080/wslm
    /**
     * 服务器地址
     * socket连接地址
     */
//    public static final String getFWUrl = "wslm.hui2013.com";
//    public static final String getFWUrl = "123.57.47.19";
            /*
            黑群正式服务器地址
             */
    public static final String getFWUrl = "47.107.155.98";
    //public static final String getFWUrl = "192.168.1.188";
//    public static final String getFWUrl2 = "123.57.47.19";

    /**
     *
     */
    public static final String getWchatPay = "http://www.qcposp.com/";


    /**
     * 用户
     * UUID
     */
    @POST("chat/doLogin")
    Observable<LoginEntivity> doLogin(@Query("mobile") String mobile, @Query("pwd") String pwd, @Query("device") String device, @Query("UUID") String UUID);

    // Observable<LoginEntivity> doLogin(@Query("mobile") String mobile, @Query("pwd") String pwd, @Query("device") String device, @Query("versiontype") String versiontype);
//    http://123.57.47.19:8080/wmsMobile/chat/doLogin?mobile=+8615265923720&pwd=e10adc3949ba59abbe56e057f20f883e&device=1
    @GET("chat/register")
    Observable<ImFriendEntivity> register(@Query("headUrl") String headUrl, @Query("mobile") String mobile, @Query("pwd") String pwd, @Query("name") String name, @Query("validateNum") String validateNum, @Query("recommandUserId") String recommandUserId);

    @POST("chat/findPwd")
        // 找回密码
    Observable<UpdateProfileEntivity> findPwd(@Query("mobile") String mobile, @Query("pwd") String pwd, @Query("validateNum") String validateNum);

    @GET("chat/getValidateNum")
    Observable<ValidateEntivity> getValidateNum(@Query("mobile") String mobile);
    /*
    注册时候获取验证码
     */
    @GET("chat/getValidateNumCheck")
    Observable<ValidateEntivity> getValidateNumCheck(@Query("mobile") String mobile);

    @POST("chat/updatePrivateSetting")
    Observable<ValidateEntivity> updatePrivateSetting(@Query("needAuth") String needAuth, @Query("newNotification") String newNotification, @Query("searchMobile") String searchMobile, @Query("userId") String userId);

    @POST("chat/ready")
    Observable<ReadyEntivity> ready(@Query("token") String token);

    @POST("chat/queryUser")
    Observable<SearchUserEntity> queryUser(@Query("userId") String userId, @Query("mobile") String mobile);

    @POST("chat/queryGroup")
    Observable<SearchGroupEntity> queryGroup(@Query("userId") String userId, @Query("groupName") String groupName);

    @POST("chat/createGroup")
    Observable<ImGroupEntivity> createGroup(@Query("name") String name, @Query("ids") String ids, @Query("userId") String userId);

    @POST("chat/getGroupMember")
    Observable<SearchUserEntity> getGroupMember(@Query("groupId") String groupId, @Query("userId") String userId, @Query("version") String version);

    @POST("chat/updateProfile")
        // 修改用户信息
    Observable<UpdateProfileEntivity> updateProfile(@Query("city") String city, @Query("name") String name, @Query("province") String province, @Query("sex") String sex, @Query("sign") String sign, @Query("userId") String userId);

    @POST("chat/setIgonre")
        // 设置消息免打扰
    Observable<ValidateEntivity> setIgonre(@Query("destId") String destId, @Query("destType") String destType, @Query("receiveTip") String receiveTip, @Query("userId") String userId);

    @POST("chat/showGroupMame")
        // 设置是否显示群昵称
    Observable<ValidateEntivity> showGroupMame( @Query("userId") String userId,@Query("groupId") Long groupId, @Query("isshowname") String isshowname);


    @POST("/imgroup/chat/acceptRequest")
        //同意添加好友
    Observable<ImFriendEntivity> acceptRequest(@Query("destId") String destId, @Query("destType") String destType, @Query("friendGroupId") String friendGroupId, @Query("groupId") String groupId, @Query("userId") String userId);

    /**
     * 邀请好友进群
     *
     * @param groupId
     * @param inviteIds
     * @param userId
     * @return
     */
    @GET("chat/addGroupMember")
    Observable<ValidateEntivity> addGroupMember(@Query("groupId") String groupId, @Query("inviteIds") String inviteIds, @Query("userId") String userId);

    @POST("chat/updateHead")
        //更换头像
    Observable<ValidateEntivity> updateHead(@Query("headUrl") String headUrl, @Query("userId") String userId);

    @POST("chat/setTop")
        // 置顶聊天
    Observable<ValidateEntivity> setTop(@Query("destId") String destId, @Query("destType") String destType, @Query("userId") String userId);

    @POST("chat/setBlock")
    Observable<ValidateEntivity> setBlock(@Query("blockId") String blockId, @Query("userId") String userId);

    @POST("chat/quitGroup")
    Observable<ValidateEntivity> quitGroup(@Query("groupId") String groupId, @Query("userId") String userId);

    @POST("chat/delFriend")
    Observable<ValidateEntivity> delFriend(@Query("destId") String destId, @Query("userId") String userId);

    @POST("chat/updateRemark")
    Observable<ValidateEntivity> updateRemark(@Query("destId") String destId, @Query("userId") String userId, @Query("remark") String remark);

    @POST("chat/removeBlack")
    Observable<ValidateEntivity> removeBlack(@Query("destId") String destId, @Query("userId") String userId);

   /* @POST("chat/sendRedPacket")
    Observable<String> sendRedPacket(@Query("content") String content, @Query("userId") String userId, @Query("redPacketCount") String redPacketCount, @Query("redPacketContent") String redPacketContent
            , @Query("destId") String destId, @Query("destType") String destType, @Query("redPacketAmount") String redPacketAmount, @Query("command") String command);
*/
    @POST("chat/sendRedPacket")
    Observable<String> sendRedPacket(@Query("content") String content);
    /**
     * 幸运红包
     */
    @POST("chat/sendLuckRedPacket")
    Observable<String> sendLuckRedPacket(@Query("userId") Long userId,@Query("money") Double money,@Query("redPacketContent") String redPacketContent,@Query("groupId") String groupId);

    @POST("chat/getMsgHistory")
    Observable<ValidateEntivity> getMsgHistory(@Query("size") String size, @Query("destId") String destId, @Query("destType") String destType, @Query("userId") String userId
            , @Query("startMsgId") String startMsgId);

    /**
     * 设置/修改 支付密码
     */
    @POST("pay/setPayPwd")
    Observable<ValidateEntivity> setPayPwd(@Query("pwd") String pwd, @Query("userId") String userId, @Query("validateNum") String validateNum);

    @POST("chat/getRedPacketHistory")
    Observable<RedPacketHistoryEntivity> getRedPacketHistory(@Query("redPacketId") String redPacketId, @Query("userId") String userId);

    @POST("chat/openRedPacket")
    Observable<String> openRedPacket(@Query("redPacketId") String redPacketId, @Query("userId") String userId);

    @POST("pay/validatePayPwd")
    Observable<String> validatePayPwd(@Query("pwd") String pwd, @Query("userId") String userId);

    @POST("transfer/createTransfer")
    Observable<TransfreCreateEntivity> createTransfer(@Query("content") String content);

    @POST("transfer/viewTransfer")
    Observable<TransferViewEntivity> viewTransfer(@Query("userId") String userId, @Query("transId") String transId);
    /**
     * 用户确认收款
     */
    @POST("transfer/confimTransfer")
    Observable<TransferViewEntivity> confimTransfer(@Query("content") String content);

    /**
     * 通过 id 查询用户资料
     */
    @POST("chat/getUserById")
    Observable<ImFriendEntivity> getUserById(@Query("userId") String userId, @Query("destId") String destId);

    /**
     * 取消置顶
     * destType :  1 为 人       2 为 群
     */
    @POST("chat/cancleTop")
    Observable<ValidateEntivity> cancleTop(@Query("destId") String destId, @Query("destType") String destType, @Query("userId") String userId);

    /**
     * 通过 群 id  获取群信息
     */
    @POST("chat/getGroupById")
    Observable<ImGroupEntivity> getGroupById(@Query("groupId") String groupId, @Query("userId") String userId);

    /**
     * 获取 钱包余额、
     */
    @POST("wallet/getBalance")
    Observable<String> getBalance(@Query("userId") String userId);

    /**
     * 通过 ID 查询 明细
     */
    @POST("wallet/getWalletHistory")
    Observable<List<WalletDetailsEntity>> getWalletHistory(@Query("userId") String userId);

    /**
     * 收藏或取消收藏群
     */
    @POST("chat/favoriteGroup")
    Observable<InfoBean> favoriteGroup(@Query("userId") String userId,
                                       @Query("groupId") String groupId,
                                       @Query("favorite") String favorite);

    /**
     * 全体禁言或取消禁言
     */
    @POST("chat/silenceAll")
    Observable<InfoBean> opeGroup(@Query("userId") String userId,
                                  @Query("groupId") String groupId,
                                  @Query("ope") String ope);

    /**
     * 修改群名称
     */
    @POST("chat/updateGroup")
    Observable<ValidateEntivity> updateGroup(@Query("name") String name, @Query("groupId") String groupId, @Query("userId") String userId);

    /**
     * 修改群昵称
     */
    @POST("chat/updateGroupMemberMark")
    Observable<ValidateEntivity> updateGroupMemberMark(@Query("groupId") String groupId, @Query("userId") String userId, @Query("markName") String markName);

    /**
     * 实名认证
     */
    @POST("chat/updateAuth")
    Observable<ValidateEntivity> updateAuth(@Query("name") String name, @Query("validateNum") String validateNum, @Query("userId") String userId, @Query("idNo") String idNo, @Query("mobile") String mobile);

    /**
     * 翻译
     */
    @POST("vip/translate")
    Observable<FanYiBean> getTextFanYi(@Query("q") String q, @Query("from") String from, @Query("to") String to, @Query("appid") String appid, @Query("salt") String salt, @Query("sign") String sign);

    /**
     * 更新版本
     */
    @POST("getVersion")
    Observable<VersionEntivity> getVersion();

    /**
     * 获取 paypal 的支付地址
     */
    @POST("user/paypal")
    Observable<PayUrlInfoEntity> getPaypalUrl(@Query("uid") String uid, @Query("num") String num, @Query("price") String price, @Query("name") String name, @Query("total") String total);

    /**
     * 获取 认证状态
     */
    @POST("/user/authcheck")
    Observable<PhpStatusEntivity> authcheck(@Query("uid") String uid);

    /**
     * 实名认证
     *
     * @param idNo
     * @param mobile
     * @param name
     * @param userId
     * @param validateNum
     * @return
     */
    @GET("/chat/updateAuth")
    Observable<AcutocheckEntity> usercheck(@Query("idNo") String idNo, @Query("mobile") String mobile, @Query("name") String name, @Query("userId") String userId, @Query("validateNum") String validateNum);

    /**
     * 登录
     */
    @POST("wxpay/app/login")
    Observable<weixinBean> login(@Query("username") String username, @Query("password") String password);

    /**
     * 获取用户APPID
     */
    @POST("wxpay/app/getAppList")
    Observable<weixinBean> getAppList(@Query("token") String token);

    /**
     * 获取自定义二维码
     */
    @POST("wxpay/app/getPayCodeUrl")
    Observable<weixinQRData> getPayCodeUrl(@Query("token") String token, @Query("total_fee") String total_fee, @Query("title") String title, @Query("app_id") String app_id);

    /**
     * 获取
     */
    @POST("chat/inviteContact")
    Observable<ContactImportEntity> importPhone(@Query("contact") String contact, @Query("userId") String userId);

    /**
     * 获取
     */
    @POST("chat/myContact")
    Observable<String> myContact(@Query("contact") String contact, @Query("userId") String userId, @Query("pageNo") String pageNo);

    /**
     * 获取
     */
    @POST("/user/wxorders")
    Observable<weixinBean> wxorders(@Query("uid") String uid, @Query("outTradeNo") String outTradeNo, @Query("money") String money);


    /**
     * 设置短信推荐人关系
     */
    @POST("/user/setrefer")
    Observable<ValidateEntivity> setrefer(@Query("uid") String uid, @Query("mobile") String mobile);


    /**
     * 通过注册手机号获取推荐人id
     */
    @POST("/user/getrefer")
    Observable<RequestRefereeEntity> getrefer(@Query("mobile") String mobile);

    /**
     * 获取朋友圈列表
     */
    @GET("feed/getFeed")
    Observable<MyCircleItem> getcircle(@Query("pageNo") String pageNo, @Query("userId") String userId);

    /**
     * 获取自己的朋友圈
     */
    @GET("feed/getMyFeed")
    Observable<MyCircleItem> getmycircle(@Query("pageNo") String pageNo, @Query("userId") String userId);

    /**
     * 获取朋友的朋友圈
     */
    @GET("feed/getFriendFeed")
    Observable<MyCircleItem> getfriendcircle(@Query("pageNo") String pageNo, @Query("friendId") String userId);

    /**
     * 发布朋友圈动态
     *
     * @param userId  自己uid
     * @param text    文字
     * @param images  图片链接  字符串，分开
     * @param address 地址
     * @param lat
     * @param lng
     * @param at      @好友 uid，分开
     * @param priv    隐私 0公开 1私密 2部分可见 3不给谁看
     * @param uids    部分可见  不给谁看  的好友uid
     * @param video   小视频链接
     */
    @POST("feed/addFeed")
    Observable<SendCircleEntivity> postcircle(@Query("images") String images, @Query("text") String text,
                                              @Query("userId") String userId, @Query("address") String address, @Query("lat") String lat
            , @Query("lng") String lng, @Query("at") String at, @Query("priv") String priv, @Query("uids") String uids
            , @Query("video") String video);

    /**
     * 发布赞
     */
    @GET("feed/addFeedPraise")
    Observable<ValidateEntivity> getparise(@Query("feedId") String feedID, @Query("userId") String userid);

    /**
     * 发布评论
     */
    @GET("feed/addFeedComment")
    Observable<ValidateEntivity> getconmment(@Query("feedId") String feedid, @Query("userId") String userid, @Query("text") String text, @Query("replyId") String replyid);

    /**
     * 取消赞
     */
    @GET("feed/canclePraise")
    Observable<ValidateEntivity> delparise(@Query("feedId") String feedid, @Query("userId") String userid);

    /**
     * 查找附近的人
     */
    @GET("geo/findNearby")
    Observable<NearbyEntivity> getnearby(@Query("latitude") String latitude, @Query("longitude") String longitude, @Query("pageNo") String pageNo, @Query("userId") String userId);

    /**
     * 更新用户端所在位置
     */
    @GET("geo/updateGeo")
    Observable<ValidateEntivity> uplocation(@Query("latitude") String latitude, @Query("longitude") String longitude, @Query("userId") String userId);

    /**
     * 摇一摇
     */
    @GET("geo/findRandom")
    Observable<YaoyiYao> yaoyiyao(@Query("latitude") String latitude, @Query("longitude") String longitude, @Query("userId") String userId);

    /**
     * 好友朋友圈预览图片
     */
    @GET("feed/getFeedAlbum")
    Observable<Circlepreview> getpreview(@Query("userId") String userid, @Query("destId") String destId);

    /**
     * 二维码收款
     */
    @GET("transfer/createReceipt")
    Observable<GetmoneyEntivity> getmoney(@Query("content") String content);

    /**
     * 向二维码付款
     */
    @GET("transfer/postPayment")
    Observable<ValidateEntivity> paymoney(@Query("content") String content);

    /**
     * 添加收藏
     */
    @GET("favorite/addFavorite")
    Observable<ValidateEntivity> addcolaction(@Query("category") String category, @Query("content") String content, @Query("fromHeadUrl") String fromHeadUrl, @Query("fromId") String fromId, @Query("fromName") String fromName, @Query("userId") String userId);

    /**
     * 获取收藏列表
     */
    @GET("favorite/getFavorite")
    Observable<ColactionEntity> getcolaction(@Query("pageNo") String pageNo, @Query("userId") String userId);

    /**
     * 取消收藏
     */
    @GET("favorite/delFavorite")
    Observable<ValidateEntivity> deletelaction(@Query("favoriteId") String favoriteId, @Query("userId") String userId);

    /**
     * 删除朋友圈
     */
    @GET("feed/deleteFeed")
    Observable<ValidateEntivity> deletecircle(@Query("feedId") String feedId, @Query("userId") String userId);

    /**
     * 朋友圈获取单条动态
     */
    @GET("feed/getOneFeed")
    Observable<CircleItemEntity> getonecircle(@Query("feedId") String feedId, @Query("userId") String userId);

    /**
     * 付款码
     */
    @GET("transfer/createPayment")
    Observable<PayTransferEntivity> paytransfer(@Query("content") String content);

    /**
     * 更换相册背景
     */
    @GET("feed/changeBackImage")
    Observable<ValidateEntivity> setcircleback(@Query("imgUrl") String imgUrl, @Query("userId") String userid);

    /**
     * 获取用户的背景图
     */
    @GET("feed/getBackImage")
    Observable<String> getfriendcircleback(@Query("userId") String userid);

    /**
     * 获取群公告
     * userId groupId pageNo
     */
    @POST("chat/getNoteList")
    Observable<GetNoticeListEntity> getNoteList(@Query("userId") String userId, @Query("groupId") String groupId, @Query("pageNo") String pageNo);

    /**
     * 发布群公告
     * userId groupId  content  title
     */
    @POST("chat/createGroupNote")
    Observable<ValidateEntivity> createGroupNote(@Query("userId") String userId, @Query("groupId") String groupId, @Query("content") String content, @Query("title") String title);

    /**
     * 发布群公告
     * userId groupId  content  title noteId
     */
    @POST("chat/updateGroupNote")
    Observable<ValidateEntivity> updateGroupNote(@Query("userId") String userId, @Query("groupId") String groupId, @Query("noteId") String noteId, @Query("content") String content, @Query("title") String title);

    /**
     * feed/setFeedAuth
     * 设置朋友圈权限
     * userId  friendId  priv 开启状态 0 关闭 1 开启 direct  0 设置我的朋友圈不给好友看权限  1 设置不看好友的朋友圈权限
     */
    @POST("feed/setFeedAuth")
    Observable<ValidateEntivity> setFeedAuth(@Query("userId") String userId, @Query("friendId") String friendId, @Query("priv") String priv, @Query("direct") String direct);

    /**
     * 设置群头像chat/setGroupHeader
     *
     * @ groupId          id
     * @ userId          请求人id
     * @ url            请求人id
     */
    @POST("chat/setGroupHeader")
    Observable<ValidateEntivity> setGroupHeader(@Query("userId") String userId, @Query("groupId") String groupId, @Query("url") String url);

    /**
     * 附近的人，获取列表
     *
     * @ userId
     * @ latitude
     * @ longitude
     * @ sex
     * @ pageNo
     */
    @POST("geo/findNearby")
    Observable<GlobalRoamingBeans> findNearby(@Query("userId") String userId, @Query("latitude") String latitude,
                                              @Query("longitude") String longitude, @Query("sex") String sex, @Query("pageNo") String pageNo);

    /**
     * 充值支付，创建订单
     * userId,subject,amount,type,body
     */
    @POST("wallet/createRechargeOrder")
    Observable<RechargeOrderBean> createRechargeOrder(@Query("content") String content);

    /**
     * 微信提现
     * userId,amount,openid
     */
    @POST("wallet/withdraw")
    Observable<ValidateEntivity> withdraw(@Query("content") String content);

    /**
     * 支付宝提现
     * userId,amount,openid
     */
    @POST("/imgroup/wallet/alipayWithdraw")
    Observable<ValidateEntivity> alipayWithdraw(@Query("content") String content);

    /**
     * 投诉  chat/report
     *
     * @param destId   id
     * @param userId   请求人id
     * @param destType 1个人 2群组z
     * @param imgs     图片 逗号隔开
     * @param msg      图片 逗号隔开
     */
    @POST("chat/report")
    Observable<ReportResultBean> report(@Query("userId") String userId, @Query("destId") String destId,
                                        @Query("destType") String destType, @Query("imgs") String imgs, @Query("msg") String msg);

    /**
     * 编辑群简介  chat/updateGroupDesc
     *
     * @param groupId      id
     * @param userId       请求人id
     * @param descriptions
     */
    @POST("chat/updateGroupDesc")
    Observable<ValidateEntivity> updateGroupDesc(@Query("userId") String userId,
                                                 @Query("groupId") String groupId, @Query("descriptions") String descriptions);

    /**
     * 设置群管理员 chat/setGroupAdmin
     *
     * @param groupId id
     * @param userId  请求人id
     * @param destId
     * @param isSet   1 为设置  其他都是取消
     */
    @POST("chat/setGroupAdmin")
    Observable<ValidateEntivity> setGroupAdmin(@Query("userId") String userId,
                                               @Query("groupId") String groupId, @Query("destId") String destId, @Query("isSet") String isSet);

    /**
     * 解散群组 chat/dismissGroup
     *
     * @param groupId 群id
     * @param userId  请求人id
     */
    @POST("chat/dismissGroup")
    Observable<ValidateEntivity> dismissGroup(@Query("groupId") String groupId, @Query("userId") String userId);

    /**
     * 转让群组 chat/transGroup
     *
     * @param groupId 群id
     * @param userId  请求人id
     * @param destId  对方id
     */
    @POST("chat/transGroup")
    Observable<ValidateEntivity> transGroup(@Query("groupId") String groupId, @Query("userId") String userId, @Query("destId") String destId);

    /**
     * 同意或拒绝群组转让 chat/transGroupConfirm
     *
     * @param groupId 群id
     * @param userId  请求人id
     * @param accept  1是同意
     */
    @POST("chat/transGroupConfirm")
    Observable<ValidateEntivity> transGroupConfirm(@Query("groupId") String groupId, @Query("userId") String userId, @Query("accept") String accept);

    /**
     * 赠送礼物 /feed/sendFeedGift
     *
     * @param feedId 动态id
     * @param destId 接收方用户id
     * @param gift   礼物实体
     * @param userId 赠送方用户id
     */
    @POST("feed/sendFeedGift")
    Observable<ValidateEntivity> sendFeedGift(@Query("feedId") String feedId, @Query("destId") String destId, @Query("gift") String gift, @Query("userId") String userId);

    /**
     * 赠送礼物 /feed/myGift
     *
     * @param pageNo 页数
     * @param userId 用户id
     */
    @POST("feed/myGift")
    Observable<MyGiftItem> myGift(@Query("pageNo") String pageNo, @Query("userId") String userId);

    /**
     * 获取靓号类型 /pay/getNumberType
     */
    @POST("pay/getNumberType")
    Observable<LiangSortItem> getNumberType();


    /**
     * 获取靓号 /pay/getVipNumber
     * sessid
     * type
     */
    @POST("pay/getVipNumber")
    Observable<GetVipNumBean> getVipNumber(@Query("sessid") String sessid, @Query("type") String type);

    /**
     * 创建购买靓号的订单 /pay/createNumberOrder
     * amount	价格	string	@mock=0.01
     * body	项目标题 可以为空	string	@mock=SAMIM
     * headUrl	头像url
     * mobile	手机号	string	@mock=+8615615293966
     * name	昵称	string	@mock=shine
     * number	号码	string	@mock=666999
     * pwd	密码	string	@mock=123456
     * sessid	seesionid	string	@mock=52896E0BEB726D525E059001D440837C
     * subject	支付项目 不能为空	string	@mock=靓号购买
     * type	支付方式	string	@mock=alipay
     * validateNum	验证码
     * userId
     */
    @POST("pay/createNumberOrder")
    Observable<RechargeOrderBean> createNumberOrder(@Query("amount") String amount, @Query("body") String body, @Query("headUrl") String headUrl
            , @Query("mobile") String mobile, @Query("name") String name, @Query("number") String number, @Query("pwd") String pwd
            , @Query("sessid") String sessid, @Query("subject") String subject, @Query("type") String type, @Query("validateNum") String validateNum
            , @Query("userId") String userId);

    /**
     * 检测靓号 pay/checkNumber
     * number
     */
    @POST("pay/checkNumber")
    Observable<RechargeOrderBean> checkNumber(@Query("number") String number);

    /**
     * 群公告删除 chat/deleteGroupNote
     * noteId
     * groupId
     * userId
     */
    @POST("chat/deleteGroupNote")
    Observable<ValidateEntivity> deleteGroupNote(@Query("noteId") String noteId, @Query("groupId") String groupId, @Query("userId") String userId);

    /**
     * 意见反馈 chat/feedback_submit
     * userId
     * feedbackid
     * content
     * pic
     * mobile
     */
    @POST("feed/addFeedInfor")
    Observable<ValidateEntivity> addFeedInfor(@Query("userId") String userId
            , @Query("content") String content, @Query("imags") String imags, @Query("mobile") String mobile);

    /**
     * 发送AA收款 transfer/aaTrans
     * counts 收款个数 number @mock=2
     * destId 群或者用户id string @mock=17228
     * destType 1个人 2群组 number @mock=1
     * msg 收款显示文字 string @mock=AA收款
     * totalAmount 总金额 number @mock=2
     * userId
     */
    @POST("transfer/aaTrans")
    Observable<AAentivity> aaTrans(@Query("content") String content);

    /**
     * 获取AA收款 transfer/aaTransDetail
     * transId AA收款id number @mock=1
     * userId
     */
    @POST("transfer/aaTransDetail")
    Observable<AATransDetailBean> aaTransDetail(@Query("transId") String transId
            , @Query("userId") String userId);

    /**
     * AA收款-付款 transfer/aaTransPay
     * amount 付款金额 string @mock=0.01
     * destId 收款用户id string @mock=17229
     * payPwd 支付密码 string @mock=sdsadsa
     * transId 转账ID string @mock=2
     * userId
     */
    @POST("transfer/aaTransPay")
    Observable<ValidateEntivity> aaTransPay(@Query("content") String content);
   /* @POST("transfer/aaTransPay")
    Observable<ValidateEntivity> aaTransPay(@Query("amount") String amount
            , @Query("destId") String destId, @Query("payPwd") String payPwd, @Query("transId") String transId, @Query("userId") String userId
    );*/

    /**
     * 幸运红包付款
     */
    @POST("chat/partakeLuckRedPacket")
    Observable<ValidateEntivity> partakeLuckRedPacket(@Query("userId") String userId,@Query("redPacketId") String redPacketId,@Query("groupId") String groupId);

    /**
     * 幸运红包详情
     */
    @POST("chat/queryLuckRedPacket")
    Observable<queryLuckRedPacketEntivity> queryLuckRedPacket(@Query("userId") String userId, @Query("redPacketId") String redPacketId, @Query("groupId") String groupId);

    /**
     * 删除群成员 chat/removeGroupMember
     * destId 被删除的成员id number 17265
     * groupId 群组id number 62
     * userId 群主id或者群管理id number 17229
     */
    @POST("chat/removeGroupMember")
    Observable<ValidateEntivity> removeGroupMember(@Query("destId") String destId
            , @Query("groupId") String groupId, @Query("userId") String userId
    );

    /**
     * 更新加群验证 chat/updateJoinstatus
     * answer  string @mock=发红包
     * groupId  number @mock=56
     * question  string @mock=你的加入谜底
     * status  number @mock=0
     * userId  number @mock=17228
     */
    @POST("chat/updateJoinstatus")
    Observable<ValidateEntivity> updateJoinstatus(@Query("answer") String answer
            , @Query("groupId") String groupId, @Query("question") String question
            , @Query("status") String status, @Query("userId") String userId, @Query("fee") String fee, @Query("days") String days
    );

    /**
     * 申请加入群组 chat/requestGroupJoin
     * answer  string @mock=验证问题
     * groupId  number @mock=96
     * userId  number @mock=17229
     */
    @POST("chat/requestGroupJoin")
    Observable<ValidateEntivity> requestGroupJoin(@Query("answer") String answer
            , @Query("groupId") String groupId, @Query("userId") String userId
    );

    /**
     * 付费加群 /chat/payForGroupJoin
     * groupId  number @mock=566
     * pwd  string @mock=sdsadsadsa
     * userId  number @mock=17288
     */
    @POST("chat/payForGroupJoin")
    Observable<ValidateEntivity> payForGroupJoin(@Query("pwd") String pwd
            , @Query("groupId") String groupId, @Query("userId") String userId
    );

    /**
     * 付费加群 /chat/payForGroupJoin
     * groupId  number @mock=566
     * pwd  string @mock=sdsadsadsa
     * userId  number @mock=17288
     */
    @POST("chat/payForGroupRenew")
    Observable<ValidateEntivity> payForGroupRenew(@Query("pwd") String pwd
            , @Query("groupId") String groupId, @Query("userId") String userId
    );


    /**
     * 审核群成员/更新群成员禁言状态 /chat/updateGroupMember
     * destId 群成员id number @mock=17228
     * groupId 群组id number @mock=2643
     * ope  number @mock=0
     * type  number @mock=1
     * userId  number @mock=17234
     */
    @POST("chat/updateGroupMember")
    Observable<ValidateEntivity> updateGroupMember(@Query("destId") String destId
            , @Query("groupId") String groupId, @Query("ope") String ope
            , @Query("type") String type, @Query("userId") String userId
    );

    /**
     * 获取群等级配置 /chat/queryGroupConfig
     * userId  number @mock=17234
     */
    @POST("chat/queryGroupConfig")
    Observable<GroupLevelEntity> queryGroupConfig(@Query("userId") String userId
    );

    /**
     * 升级群 /chat/payForGroupLevel
     * groupId  number @mock=656
     * level 即将升级的级别 number @mock=2
     * pwd  string @mock=dsadfsafdsafdosaf
     * userId  number @mock=17228
     */


    @POST("chat/payForGroupLevel")
    Observable<ImGroupEntivity> payForGroupLevel(@Query("content") String content);

    /**
     * 邀请入群消息推送
     *
     * @param userId    邀请人ID
     * @param inviteIds 被邀请人ID串，多个被邀请人用逗号分隔
     * @param groupId   被邀请进入的群ID
     * @return 1：设置成功；-1:操作失败
     */
    @POST("chat/inviteJoinGroupNotice")
    Observable<ValidateEntivity> inviteJoinGroupNotice(@Query("userId") String userId, @Query("inviteIds") String inviteIds, @Query("groupId") String groupId);

    /**
     * 发送加好友验证请求
     *
     * @param userId    邀请人ID
     * @param destId 被加好友ID
     * @param message   验证消息内容
     * @return 1：设置成功；-1:操作失败
     */
    @POST("chat/authenticationRequestNotice")
    Observable<ValidateEntivity> authenticationRequestNotice(@Query("userId") String userId, @Query("destId") String destId, @Query("destType") String destType,@Query("message") String message);

    @POST("chat/requestFriend")
        //请求加好友/进群 使用string 有好友和群两种状态
    Observable<AddFriendEntity> requestFriend(@Query("destType") String destType, @Query("destId") String destId, @Query("userId") String userId,@Query("message") String message);

}
